#pragma once

#include "Path/Path.h"
#include "Path/Paths.h"
#include "Containers/Vector.h"
#include "Containers/String.h"
#include "Containers/Optional.h"


namespace WH
{
    
    //create a file dialog
    //to select files to open
    //return selected files path
    //return empty vector if user cancel
    //@InFilter , such as {"Images(*.png,*.jpg)","my document(*.txt)","*.tlgf"}
    WHENGINE_API TVector<SPath> CreateOpenFileDialog(
        const CString& InTitle, 
        const SPath& InDefaultPath, 
        const TVector<CString>& InFilter,
        bool MultiSelect=false
        );

    //create a file dialog
    //to select path to save
    //return selected path
    //return empty path if user cancel
    WHENGINE_API TOptional<SPath> CreateSaveFileDialog(
        const CString& InTitle, 
        const SPath& InDefaultPath, 
        const CString& InFilter);

    //create a folder dialog
    //to select folder
    //return selected folder path
    //return empty path if user cancel
    WHENGINE_API TOptional<SPath> CreateFolderDialog(
        const CString& InTitle, 
        const SPath& InDefaultPath =SPaths::GetWorkingDirectory()
    );
}